import { useUserStore } from '@/stores/user'
import Request from 'luch-request'

// 1. 创建实例
const request = new Request({
  baseURL: 'https://consult-api.itheima.net',
  custom: {loading: true }
})

const whiteList = ['/code', '/login', '/login/password']

// 2. 配置请求拦截器
request.interceptors.request.use((config)=>{
  if(config.custom?.loading){
    uni.showLoading({
      title: '正在加载中...',
      mask: true
    })
  }
  // 2.1 统一携带token
  const store = useUserStore()
  if(store.token && !whiteList.includes(config.url!)){
    config.header!.Authorization = `Bearer ${store.token}`
  }

  return config;
}, (error)=>{
  return Promise.reject(error);
})

// 3. 配置响应拦截器
request.interceptors.response.use((res)=>{
  uni.hideLoading()
  // 3.1 请求成功但业务失败
  if(res.data.code !== 10000){
    uni.showToast({
      title: res.data.message || '业务失败',
      icon: 'none'
    })
    console.log(res, 'ccccccccc');
    return Promise.reject(new Error('6666'))
  }

  // 3.2 请求成功且业务成功 
  return res.data.data
}, (error)=>{
  console.log(error, '-=======');
  
  uni.hideLoading()
  // 3.3 判断错误码为401
  if (error.statusCode === 401) {
    uni.showToast({
      title: error.data.message,
      icon: 'none'
    })
    uni.redirectTo({
      url: '/pages/login/index'
    })
  }
  return Promise.reject(error)
})

// 4. 导出
export { request }